/**
 * VideoAPI 使用示例
 * 展示如何使用新增的视频获取接口
 */

import { VideoAPI } from '../api'
// import type { VideoData } from '../api'

/**
 * 基本视频获取示例
 */
export class VideoAPIExamples {
  
  /**
   * 示例1：获取所有视频
   */
  static async getAllVideosExample() {
    console.log('🎬 获取所有视频...')
    
    const result = await VideoAPI.getAllVideos()
    
    if (result.success && result.data) {
      console.log(`✅ 成功获取 ${result.data.length} 个视频`)
      result.data.forEach(video => {
        console.log(`  - ${video.name} (${video.duration}s)`)
      })
      return result.data
    } else {
      console.error('❌ 获取视频失败:', result.error)
      return []
    }
  }

  /**
   * 示例2：分页获取视频
   */
  static async getPaginatedVideosExample(page: number = 1, limit: number = 5) {
    console.log(`📄 获取第 ${page} 页视频 (每页 ${limit} 个)...`)
    
      const result = await VideoAPI.searchVideos('')
    
    if (result.success && result.data) {
      const videos = Array.isArray(result.data) ? result.data : []
      console.log(`✅ 获取到 ${videos.length} 个视频`)
      videos.forEach((video: any, index: number) => {
        console.log(`  ${index + 1}. ${video.name}`)
      })
      return videos
    } else {
      console.error('❌ 获取分页视频失败:', result.error)
      return null
    }
  }

  /**
   * 示例3：搜索视频
   */
  static async searchVideosExample(query: string) {
    console.log(`🔍 搜索视频: "${query}"...`)
    
    const result = await VideoAPI.searchVideos(query, {
      sortBy: 'barrageCount',
      sortOrder: 'desc'
    })
    
    if (result.success && result.data) {
      console.log(`✅ 找到 ${result.data.length} 个相关视频`)
      result.data.forEach(video => {
        console.log(`  - ${video.name} (弹幕: ${video.barrageCount || 0})`)
      })
      return result.data
    } else {
      console.error('❌ 搜索失败:', result.error)
      return []
    }
  }

  /**
   * 示例4：获取热门视频
   */
  static async getPopularVideosExample(limit: number = 5) {
    console.log(`🔥 获取热门视频 (前 ${limit} 个)...`)
    
    const result = await VideoAPI.getPopularVideos(limit)
    
    if (result.success && result.data) {
      console.log(`✅ 获取到 ${result.data.length} 个热门视频`)
      result.data.forEach((video, index) => {
        console.log(`  ${index + 1}. ${video.name} - ${video.barrageCount || 0} 弹幕`)
      })
      return result.data
    } else {
      console.error('❌ 获取热门视频失败:', result.error)
      return []
    }
  }

  /**
   * 示例5：获取视频分类
   */
  static async getVideoCategoriesExample() {
    console.log('📂 获取视频分类...')
    
    const result = await VideoAPI.getVideoCategories()
    
    if (result.success && result.data) {
      console.log(`✅ 共有 ${result.data.length} 个分类`)
      result.data.forEach(category => {
        console.log(`  - ${category.name}: ${category.count} 个视频`)
      })
      return result.data
    } else {
      console.error('❌ 获取分类失败:', result.error)
      return []
    }
  }

  /**
   * 示例6：按分类获取视频
   */
  static async getVideosByCategoryExample(categoryName: string) {
    console.log(`📁 获取分类 "${categoryName}" 的视频...`)
    
    const result = await VideoAPI.searchVideos(categoryName)
    
    if (result.success && result.data) {
      const videos = Array.isArray(result.data) ? result.data : []
      console.log(`✅ 分类 "${categoryName}" 共有 ${videos.length} 个视频`)
      videos.forEach((video: any, index: number) => {
        console.log(`  ${index + 1}. ${video.name}`)
      })
      return videos
    } else {
      console.error('❌ 获取分类视频失败:', result.error)
      return null
    }
  }

  /**
   * 示例7：获取视频详细统计
   */
  static async getVideoStatsExample(videoId: string) {
    console.log(`📊 获取视频 ${videoId} 的统计信息...`)
    
    const result = await VideoAPI.getVideoStats(videoId)
    
    if (result.success && result.data) {
      const stats = result.data
      console.log('✅ 视频统计信息:')
      console.log(`  - 播放次数: ${stats.viewCount}`)
      console.log(`  - 弹幕数量: ${stats.barrageCount}`)
      console.log(`  - 点赞数量: ${stats.likeCount}`)
      console.log(`  - 视频时长: ${stats.duration}s`)
      console.log(`  - 上传时间: ${stats.uploadTime}`)
      return stats
    } else {
      console.error('❌ 获取统计信息失败:', result.error)
      return null
    }
  }

  /**
   * 示例8：同步本地视频
   */
  static async syncLocalVideosExample() {
    console.log('🔄 同步本地视频到数据库...')
    
    const result = await VideoAPI.getAllVideos()
    
    if (result.success && result.data) {
      console.log('✅ 获取视频列表完成!')
      console.log(`  - 总数: ${result.data.length} 个`)
      
      if (result.data.length > 0) {
        console.log('视频列表:')
        result.data.slice(0, 3).forEach((video: any) => {
          console.log(`  + ${video.name}`)
        })
      }
      
      return result.data
    } else {
      console.error('❌ 同步失败:', result.message)
      return null
    }
  }

  /**
   * 示例9：获取主页推荐内容
   */
  static async getHomePageContentExample() {
    console.log('🏠 获取主页推荐内容...')
    
    const result = await VideoAPI.getAllVideos()
    
    if (result.success && result.data) {
      console.log('✅ 主页内容:')
      console.log(`📈 视频列表 (${result.data.length} 个):`)
      result.data.slice(0, 3).forEach((video: any) => {
        console.log(`  - ${video.name}`)
      })
      
      console.log(`🆕 最新视频 (${result.data.length} 个):`)
      result.data.slice(0, 3).forEach((video: any) => {
      console.log(`  - ${video.name}`)
    })
    
      console.log(`📊 总体统计:`)
      console.log(`  - 总视频数: ${result.data.length}`)
      
      return result.data
    } else {
      console.error('❌ 获取主页内容失败:', result.error)
      return null
    }
  }

  /**
   * 示例10：搜索和过滤视频
   */
  static async searchAndFilterExample(options: {
    query?: string
    category?: string
    sortBy?: 'name' | 'uploadTime' | 'duration' | 'barrageCount' | 'viewCount'
  }) {
    console.log('🔍 搜索和过滤视频...')
    
    const result = await VideoAPI.searchVideos('', options)
    
    if (result.success && result.data) {
      const videos = Array.isArray(result.data) ? result.data : []
      console.log(`✅ 找到 ${videos.length} 个视频:`)
      videos.forEach((video: any, index: number) => {
        console.log(`  ${index + 1}. ${video.name}`)
      })
      
      return videos
    } else {
      console.error('❌ 搜索失败:', result.error)
      return null
    }
  }

  /**
   * 完整的使用流程示例
   */
  static async completeWorkflowExample() {
    console.log('🚀 开始完整的视频API使用流程...\n')
    
    try {
      // 1. 获取主页内容
      console.log('=== 步骤1: 获取主页内容 ===')
      const homepage = await this.getHomePageContentExample()
      console.log('')
      
      // 2. 获取视频分类
      console.log('=== 步骤2: 获取视频分类 ===')
      // const categories = await this.getVideoCategoriesExample()
      console.log('')
      
      // 3. 搜索视频
      if (homepage && Array.isArray(homepage) && homepage.length > 0) {
        console.log('=== 步骤3: 搜索热门视频 ===')
        const searchKeyword = homepage[0].name.split(' ')[0]
        await this.searchVideosExample(searchKeyword)
        console.log('')
      }
      
      // 4. 分页获取视频
      console.log('=== 步骤4: 分页获取视频 ===')
      await this.getPaginatedVideosExample(1, 3)
      console.log('')
      
      // 5. 获取视频统计
      if (homepage && Array.isArray(homepage) && homepage.length > 0) {
        console.log('=== 步骤5: 获取视频统计 ===')
        await this.getVideoStatsExample(homepage[0].id)
        console.log('')
      }
      
      // 6. 同步本地视频
      console.log('=== 步骤6: 同步本地视频 ===')
      await this.syncLocalVideosExample()
      
      console.log('\n✅ 完整流程执行完毕!')
      
    } catch (error) {
      console.error('\n❌ 流程执行出错:', error)
      
      // 使用错误处理工具
      if (error instanceof Error) {
        console.log('错误信息:', error.message)
      }
    }
  }
}

// 导出便捷的使用函数
export const videoAPIExamples = {
  // 基础操作
  getAllVideos: VideoAPIExamples.getAllVideosExample,
  searchVideos: VideoAPIExamples.searchVideosExample,
  getPopularVideos: VideoAPIExamples.getPopularVideosExample,
  
  // 分类和分页
  getCategories: VideoAPIExamples.getVideoCategoriesExample,
  getVideosByCategory: VideoAPIExamples.getVideosByCategoryExample,
  getPaginatedVideos: VideoAPIExamples.getPaginatedVideosExample,
  
  // 统计和管理
  getVideoStats: VideoAPIExamples.getVideoStatsExample,
  syncLocalVideos: VideoAPIExamples.syncLocalVideosExample,
  
  // 高级功能
  getHomePage: VideoAPIExamples.getHomePageContentExample,
  searchAndFilter: VideoAPIExamples.searchAndFilterExample,
  
  // 完整流程
  runCompleteWorkflow: VideoAPIExamples.completeWorkflowExample
}

export default VideoAPIExamples
